package cn.wolfcode.p2p.base.util;

/**
 * 用户状态类，记录用户在平台使用系统中所有的状态。
 */
public class BitStateUtil {

	// 填写基本资料
	public static final long OP_BASIC_INFO = 1 << 0;

	// 实名认证
	public static final long OP_REAL_AUTH = 1 << 1;

	// 视频认证
	public static final long OP_VEDIO_AUTH = 1 << 2;

	// 是否有借款在审核流程当中
	public static final long HAS_BIDREQUEST_IN_PROCESS = 1 << 3;

	// 绑定银行卡
	public static final long OP_BIND_BANKINFO = 1 << 4;

	// 是否有提现在审核流程当中
	public static final long HAS_WITHDRAW_IN_PROCESS = 1 << 5;

	/**
	 * @param states
	 *            所有状态值
	 * @param value
	 *            需要判断状态值
	 * @return 是否存在
	 */
	public static boolean hasState(long states, long value) {
		return (states & value) != 0;
	}

	/**
	 * @param states
	 *            已有状态值
	 * @param value
	 *            需要添加状态值
	 * @return 新的状态值
	 */
	public static long addState(long states, long value) {
		if (hasState(states, value)) {
			return states;
		}
		return (states | value);
	}

	/**
	 * @param states
	 *            已有状态值
	 * @param value
	 *            需要删除状态值
	 * @return 新的状态值
	 */
	public static long removeState(long states, long value) {
		if (!hasState(states, value)) {
			return states;
		}
		return states ^ value;
	}
}
